/**
 * 在限定范围内使用 using
 * 
 * using 指令通常没有什么好处（节省一些打字）。由于 using 指令从命名空间导入所有名称（可能包括许多您永远不会使用的名称），因此发生命名冲突的可能性会显着增加（特别是在导入命名空间时std）。
 * 
 * 最佳实践
 *   优先使用显式命名空间而不是 using 语句。尽可能避免使用指令。using 声明可以在块内使用。
 * 
 */

#include <iostream>

namespace a {
    int x{ 10 };
}

namespace b {
    int x{ 20 };
}

int main()
{
   using std::cout; // this using declaration tells the compiler that cout should resolve to std::cout
   cout << "Hello world!\n"; // so no std:: prefix is needed here!

//    using namespace a; // using directive
//    using namespace b;
//    cout << "x: " << x << "\n"; // error: reference to 'x' is ambiguous

   return 0;
} // the using declaration expires at the end of the current scope